package com.xie.leetcode.characterstring;

//字符串中的第一个唯一字符
//        给定一个字符串，找到它的第一个不重复的字符，并返回它的索引。如果不存在，则返回 -1。
//
//         
//
//        示例：
//
//        s = "leetcode"
//        返回 0
//
//        s = "loveleetcode"
//        返回 2
//         
//
//        提示：你可以假定该字符串只包含小写字母。
//
//        相关标签
//        队列
//        哈希表
//        字符串
//        计数
//
//        作者：力扣 (LeetCode)
//        链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn5z8r/
//        来源：力扣（LeetCode）
//        著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。

import java.util.HashMap;

/**
 * @author xiezhendong
 * @date 2021/10/22
 */
public class FirstUniqChar {

    public static void main(String[] args) {
        FirstUniqChar firstUniqChar = new FirstUniqChar();
        System.out.println(firstUniqChar.firstUniqChar("leetcode"));
        System.out.println(firstUniqChar.firstUniqChar("loveleetcode"));
    }

    public int firstUniqChar(String s) {
        char[] sChars = s.toCharArray();
        HashMap<String, Integer> charsMap = new HashMap<>();
        for (char sChar : sChars) {
            String v = String.valueOf(sChar);
            charsMap.merge(v, 1, Integer::sum);
        }
        for (int i = 0; i < sChars.length; i++) {
            String v = String.valueOf(sChars[i]);
            if (charsMap.get(v) == 1) {
                return i;
            }
        }
        return -1;
    }
}
